package com.kmxd.ams.client.system;

import com.kmxd.ams.client.system.dto.SwitchFondsDTO;
import com.kmxd.ams.client.system.dto.SwitchUnitDTO;
import com.kmxd.ams.client.system.dto.SysInitDTO;
import com.kmxd.ams.client.system.vo.*;
import com.kmxd.ams.core.common.bo.LoginUser;
import com.kmxd.ams.infra.arrange.base.BaseBO;
import java.util.List;

/**
 * 系统公共接口
 *
 * @author ZuoLG
 */
public interface ISysCommonSvc {

  /**
   * 新增
   *
   * @param req
   */
  void init(SysInitDTO req);

  /**
   * 是否已经初始化系统
   *
   * @return
   */
  boolean initSystemStatus();

  /**
   * 根据用户获取所有单位
   *
   * @param deptIds
   * @return
   */
  List<SysCropVO> getCropByDeptIds(String deptIds);

  /**
   * 根据单位获取默认全宗
   *
   * @param cropId
   * @return
   */
  SysFondsVO getDefFonds(long cropId);

  /**
   * 根据单位获取所有单位下全宗
   *
   * @param cropId
   * @return
   */
  List<SysFondsListVO> getCropFonds(long cropId);

  /**
   * 根据用户获取部门列表
   *
   * @param deptIds
   * @return
   */
  List<SysDeptVO> getDeptByDeptIds(String deptIds);

  /**
   * 用户登录权限对象
   *
   * @param userId
   * @return
   */
  List<UserLoginAuthVO> getUserByAuth(long userId);

  /**
   * 根据权限字符设置登录用户信息
   *
   * @param authIdStr
   * @param loginUser
   */
  LoginUser setLoginUserAuth(String authIdStr, LoginUser loginUser);

  /**
   * 切换单位
   *
   * @param req
   * @return
   */
  LoginUser switchUnit(SwitchUnitDTO req);

  /**
   * 切换全宗
   *
   * @param req
   * @return
   */
  LoginUser switchFonds(SwitchFondsDTO req);

  /**
   * 返回本单位
   *
   * @param req
   * @return
   */
  LoginUser backCrop(BaseBO req);
}
